package implementacion;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;

import capaPresentacion.shared.UsuarioDTO;

import com.google.gwt.user.client.rpc.IsSerializable;

@Entity
public class Usuario implements IsSerializable {

	@Id
	private String email;
	private String nombre;
	private String apellidos;
	private String contrasenya;
	private int edad;
	private float peso;
	private int altura;
	@ManyToMany
	@JoinTable(name = "amigo", joinColumns = { @JoinColumn(name = "usuario1") }, inverseJoinColumns = { @JoinColumn(name = "usuario2") })
	private List<Usuario> amigos;

	public Usuario() {
	}

	public Usuario(String nombre, String apellidos, String email,
			String contrasenya, int edad, float peso, int altura) {
		this.nombre = nombre;
		this.apellidos = apellidos;
		this.email = email;
		this.contrasenya = contrasenya;
		this.edad = edad;
		this.peso = peso;
		this.altura = altura;
		this.amigos = new ArrayList<Usuario>();
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getApellidos() {
		return apellidos;
	}

	public void setApellidos(String apellidos) {
		this.apellidos = apellidos;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getContrasenya() {
		return contrasenya;
	}

	public void setContrasenya(String contrasenya) {
		this.contrasenya = contrasenya;
	}

	public int getEdad() {
		return edad;
	}

	public void setEdad(int edad) {
		this.edad = edad;
	}

	public float getPeso() {
		return peso;
	}

	public void setPeso(float peso) {
		this.peso = peso;
	}

	public int getAltura() {
		return altura;
	}

	public void setAltura(int altura) {
		this.altura = altura;
	}

	public List<Usuario> getAmigos() {
		return amigos;
	}

	public void setAmigos(ArrayList<Usuario> amigos) {
		this.amigos = new ArrayList<Usuario>(amigos);
	}

	public UsuarioDTO usuarioDTO() {
		return new UsuarioDTO(this.email, this.nombre, this.apellidos,
				this.contrasenya, this.edad, this.peso, this.altura);
	}
}
